home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / dev / e / makeefile.lha / MakeEFile_and_src / Examples / Commodity / commodity_epp.e next >
Encoding:
Text File  |  1994-04-19  |  3.6 KB  |  133 lines

  1. /*
  2.  * Commodité
  3.  *
  4.  * Test des modules argarray & astartup (portage amiga.lib: argc & argv, tooltypes)
  5.  *
  6.  * $VER: Commodité 1.0 (18.04.94) © Roger Delille - Amiga Revue n° 59
  7.  *
  8.  * Adaptation au E: Frantz BALINSKI
  9.  *
  10.  */
  11.  
  12. PMODULE 'PMODULES:User/argarray' /* astartup inclus */
  13.  
  14. MODULE    'commodities','libraries/commodities','exec/ports','dos/dos',
  15.     'intuition/intuition','intuition/intuitionbase','intuition/screens',
  16.     'icon','workbench/startup','workbench/workbench'
  17.  
  18. CONST    OK_HOTKEY=-1
  19.  
  20. DEF mp=NIL:PTR TO mp,
  21.     broker=NIL,filter=NIL,sender=NIL,translate=NIL
  22.  
  23. PROC main()
  24.   DEF ttypes,hotkey,newBroker:PTR TO newbroker
  25.   newBroker:=[NB_VERSION,0,'Commodité','Exemple de Commodité',
  26.              'Roger Delille - Amiga Revue n°59',NBU_UNIQUE+NBU_NOTIFY,
  27.              COF_SHOW_HIDE,0,NIL,0,NIL]:newbroker
  28.   iconbase:=NIL; cxbase:=NIL
  29.  
  30.   IF _astartup()<>NIL THEN _exit(20)    /* _argc et _argv initialisations */
  31.  
  32.   /*
  33.    * ouvrir les library nécessaires
  34.    */
  35.   IF (iconbase:=OpenLibrary('icon.library',37))
  36.     IF (cxbase:=OpenLibrary('commodities.library',37))
  37.       /*
  38.        * Crée le MsgPort
  39.        */
  40.       IF (mp:=CreateMsgPort())
  41.         newBroker.port:=mp
  42.         ttypes:=_argarrayinit(_argc,_argv)
  43.         newBroker.pri:=_argint(ttypes,'CX_PRIORITY',0)
  44.         hotkey:=_argstring(ttypes,'CX_POPKEY','help')
  45.         /*
  46.          * Crée notre Broker.
  47.          */
  48.         IF (broker:=CxBroker(newBroker,NIL))
  49.           /*
  50.            * Crée notre Filter et l'attache au Broker.
  51.            */
  52.           IF (filter:=cxFilter(hotkey))
  53.             AttachCxObj(broker,filter)
  54.             /*
  55.              * Crée notre Sender
  56.              */
  57.             IF (sender:=cxSender(mp,-1))
  58.               AttachCxObj(filter,sender)
  59.               /*
  60.                * Crée un CxObject de type Translate
  61.                */
  62.               IF (translate:=cxTranslate(NIL))
  63.                 AttachCxObj(filter,translate)
  64.                 IF CxObjError(filter)=NIL
  65.                   ActivateCxObj(broker,TRUE)
  66.                   cxMain()
  67.                 ENDIF
  68.               ENDIF
  69.             ENDIF
  70.           ENDIF
  71.           DeleteCxObjAll(broker)
  72.         ENDIF
  73.     _argarraydone()
  74.         deleteMsgPort({mp})
  75.       ENDIF
  76.       CloseLibrary(cxbase)
  77.     ENDIF
  78.     CloseLibrary(iconbase)
  79.   ENDIF
  80.   _exit(0)
  81. ENDPROC
  82.  
  83. PROC deleteMsgPort(mpPtr) /* pointer to mp, not mp */
  84.   DEF msg
  85.   IF (^mpPtr<>NIL)
  86.     WHILE (msg:=GetMsg(^mpPtr))<>NIL DO ReplyMsg(msg)
  87.     DeleteMsgPort(^mpPtr)
  88.     ^mpPtr:=NIL
  89.   ENDIF
  90. ENDPROC
  91.  
  92. /* C macros commodities.h */
  93. PROC cxFilter(d) RETURN CreateCxObj(CX_FILTER,d,0)
  94. PROC cxSender(port,id) RETURN CreateCxObj(CX_SEND,port,id)
  95. PROC cxTranslate(ie) RETURN CreateCxObj(CX_TRANSLATE,ie,0)
  96.  
  97.  
  98. PROC cxMain()
  99.   DEF fini=FALSE,msg,type,id
  100.   WHILE fini=FALSE
  101.     /*
  102.      * Attends qu'un message arrive sur notre port.
  103.      */
  104.     WaitPort(mp)
  105.     WHILE (msg:=GetMsg(mp))
  106.       type:=CxMsgType(msg)
  107.       id  :=CxMsgID(msg)
  108.       ReplyMsg(msg)
  109.  
  110.       SELECT type
  111.         CASE CXM_IEVENT
  112.           IF id=OK_HOTKEY THEN fini:=cxPopUp('Hotkey reçue!\nQuitter ?','Oui|Non')
  113.         CASE CXM_COMMAND
  114.           SELECT id
  115.             CASE CXCMD_DISABLE   ; ActivateCxObj(broker,FALSE)
  116.             CASE CXCMD_ENABLE    ; ActivateCxObj(broker,TRUE)
  117.             CASE CXCMD_KILL      ; fini:=TRUE
  118.             CASE CXCMD_APPEAR    ; cxPopUp('On me demande ?\nMe voilà !','Atchao!')
  119.             CASE CXCMD_DISAPPEAR ; NOP
  120.             CASE CXCMD_UNIQUE
  121.               fini:=cxPopUp('Je suis déjà là!\nVous voulez quitter ?','Oui|Non')
  122.           ENDSELECT
  123.       ENDSELECT
  124.     ENDWHILE
  125.   ENDWHILE
  126. ENDPROC
  127.  
  128. PROC cxPopUp(text,gads)
  129. ENDPROC EasyRequestArgs(NIL,
  130.     [SIZEOF easystruct,NIL,'Commodité',text,gads]:easystruct,NIL,NIL)
  131.  
  132. /* Fin Commodité */
  133.